const { defineConfig } = require("@vue/cli-service");
module.exports = defineConfig({
  transpileDependencies: true,
  productionSourceMap: false,
  lintOnSave: false,
  chainWebpack: (config) => {
    // 配置 optimization.splitChunks 代码分割
    config.optimization.splitChunks({
      chunks: "all", // 对所有 chunk（同步/异步）生效
      // Webpack 4 特有的参数：控制拆分后剩余体积（设为0强制合并）
      // minRemainingSize: 0,
      // minSize: 0, // 拆分的 chunk 最小体积（默认30kb，可按需调整）
      // maxSize: 0, // 不限制最大体积
      // minChunks: 1, // 被引用至少1次才拆分
      automaticNameDelimiter: "~", // 文件名分隔符
      cacheGroups: {
        // 1. 保留默认的 vendor 组（可选，打包其他 node_modules 依赖）
        vendor: {
          test: /[\\/]node_modules[\\/](?!(echarts|zrender)[\\/])/,
          name: "chunk-vendors",
          priority: -10, // 优先级低于 echarts 组，确保 echarts 先被拆分
        },
        // 2. 单独打包 echarts 的缓存组（核心配置）
        echarts: {
          test: /[\\/]node_modules[\\/](echarts|zrender)[\\/]/, // 匹配 echarts 及依赖的 zrender
          name: "chunk-echarts", // 拆分后的 chunk 名称
          priority: 20, // 优先级高于默认 vendor 组（10 > -10）
          reuseExistingChunk: true, // 复用已存在的 chunk，避免重复打包

          minChunks: 1, // 只要引用1次就合并

          filename: "js/chunks/echarts.[contenthash].js", // 输出路径+哈希命名
        },
        // 3. 可选：默认的 common 组（打包公共业务代码）
        common: {
          name: "chunk-common",
          minChunks: 2, // 被引用至少2次才拆分
          priority: -20,
          reuseExistingChunk: true,
          filename: "js/chunks/common.[contenthash].js",
        },
      },
    });
  },
});
